package com.moli.iov.base.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;

/**
 * @author whl
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface EnableRedisCacheService {

  /**
   * key前缀
   */
  String keyPrefix();

  /**
   * key主体，spel表示，例：#id（取形参中id的值）
   */
  String fieldKey();

  /**
   * 过期时间
   */
  int expireTime() default 3600;

  TimeUnit timeUnit() default TimeUnit.SECONDS;

  CacheOperation cacheOperation();

  /**
   * 缓存操作类型
   */
  enum CacheOperation {
    QUERY, // 查询
    UPDATE, // 修改
    DELETE;  // 删除
  }

}
